//111. 二叉树的最小深度
//思路：将二叉树看作左右两颗子树，不断往下递归记下左右两棵树的高度
//谁小就返回谁，这里分三种情况：
//1. 当左右都有节点时，谁小返回谁
//2. 当左边存在，右边不存在时，返回左边
//3. 当右边存在，左边不存在时，返回右边

#include <stdio.h>
struct TreeNode {
    int val;
    struct TreeNode* left;
    struct TreeNode* right;
};
int minDepth(struct TreeNode* root) {
    if (NULL == root)
        return 0;

    int leftH = minDepth(root->left) + 1;
    int rightH = minDepth(root->right) + 1;

    if (leftH > 1 && rightH > 1)
        return leftH < rightH ? leftH : rightH;
    else if (leftH > 1)
        return leftH;
    else
        return rightH;
}